package com.demo.advice;

import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;

/**
 * @author zhangxiangnan
 * @date 2021/8/18  21:53
 * 作用：
 *      1、全局异常处理: 异常拦截处理
 *      2、全局数据绑定: 全局数据绑定功能可以用来做一些初始化的数据操作
 *      3、全局数据预处理： 数据处理
 */
@ControllerAdvice
public class TestControllerAdvice {

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public  Map<String,String> handleException(Exception e) {
        System.out.println("catch exception:" + e.getMessage());
        Map<String,String> map = new HashMap<>();
        map.put("error", e.getMessage());
        map.put("code", "500");
        return map;
    }

    @ModelAttribute(name = "my")
    public Map<String,Object> mydata() {
        HashMap<String, Object> map = new HashMap<>();
        map.put("age", 99);
        map.put("gender", "男");
        return map;
    }

    @InitBinder("b")
    public void b(WebDataBinder binder) {
        binder.setFieldDefaultPrefix("b.");
    }
    @InitBinder("a")
    public void a(WebDataBinder binder) {
        binder.setFieldDefaultPrefix("a.");
    }
}